package sohsite.pelada.peladeiroJogo;

import java.util.Collection;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

import sohsite.excecao.EntradaInexistenteException;
import sohsite.pelada.peladeiro.Peladeiro;
import sohsite.util.Conexao;
import sohsite.util.generico.RepositorioGenerico;

public class RepositorioPeladeiroJogoHbm extends RepositorioGenerico<PeladeiroJogo> implements IRepositorioPeladeiroJogo {
	
	public RepositorioPeladeiroJogoHbm(){
		super(PeladeiroJogo.class);
	}
		
	public PeladeiroJogo consultar(Integer idPeladeiro, Integer idJogo)
			throws EntradaInexistenteException {
		Session sessao = Conexao.encontrarSessao();
		
		StringBuffer sbSelect = new StringBuffer();
		sbSelect.append(" FROM PeladeiroJogo as peladeiroJogo");
		sbSelect.append(" WHERE peladeiroJogo.peladeiro.id = ? ");
		sbSelect.append(" AND   peladeiroJogo.jogo.id = ? ");
		
		PeladeiroJogo peladeiroJogo = null;
		peladeiroJogo = (PeladeiroJogo)sessao.createQuery(sbSelect.toString())
						.setInteger(0, idPeladeiro).setInteger(1, idJogo).uniqueResult();
		return peladeiroJogo;
	}

	public void deletar(Integer idPeladeiro, Integer idJogo)
			throws EntradaInexistenteException {
		this.deletar(consultar(idPeladeiro,idJogo));		
	}
	

	@SuppressWarnings("unchecked")
	public Collection<PeladeiroJogo> consultarPeladeirosJogoPorPeladeiro(
			Peladeiro peladeiro) {
		Collection<PeladeiroJogo> peladeirosJogo = null;
		
		Session sessao = Conexao.encontrarSessao();
		Criteria consulta = sessao.createCriteria(PeladeiroJogo.class);
		consulta.add(Restrictions.eq("peladeiro", peladeiro));
		peladeirosJogo = consulta.list();
		
		return peladeirosJogo;
	}		
	
}
